<?php
/**
 * Created by PhpStorm.
 * User: 17732
 * Date: 2018/6/19
 * Time: 22:57
 */

namespace app\admin\controller;


use app\admin\model\Books;
use app\admin\model\Borrow;
use think\Controller;
use think\Request;
use think\Session;
use think\DB;

class Home extends BaseController
{
    /**
     * 首页展示
     */
    public function home(){
        if (!$this->checkIndex()){
            $this->redirect('/index/index/login');
        }
        $query = count(Books::selectAllBooksNotDelete());
        if($query > 0){
            $this->assign('sum',$query);
        }
        else{
            $this->assign('sum',0);
        }

        return view();
    }

    /**
     *
     */
    public function pageHomeList(){
        $page = !empty($_POST['page'])?$_POST['page']: 1;
        $res = Borrow::borrow([1,5,6]);
//        dump($res);die;
        $query = Publicmethod::isBeOverdueAll($res);
//      return $query;
        $bookQuery = Books::statesEqOne();
        foreach($bookQuery as $k => $v){
            array_push($query,$v);
        }
//        dump($query);die;
        $arr = Publicmethod::pageing($query,$page,5);
//        dump($arr);die;
        if(empty($arr)){
            return 0;
        }
        return $arr;
    }
    /**
     * 借阅管理
     */
    public function borrowingManagement(){
        if (!$this->checkIndex()){
            $this->redirect('/index/index/login');
        }
        return view('borrowingManagement');
    }
    /**
     * 借阅管理分页   1--借阅申请 3     2--归还申请 6
     * 1--申请成功（就是被借），2--驳回，3--正在申请中，4--取消申请，6--归还申请，7--已归还
     */
    public function pageManagement(){
        $page = !empty($_POST['page'])?$_POST['page']: 1;
        $type = input('pageType');
        // 1--借阅申请 3
        if($type == 1){
            $query1 = Borrow::borrow([1,5,6]);   // 状态为 1 的集合
            $states = [3];
            $query = Borrow::borrow($states);   // 状态为 3 的集合
            // 当状态为 1 的集合中的uid，在状态为 3 的集合中存在同样的 uid，那么说明这个人借了书，没有同意这个按钮
            foreach ($query as $k3 => $v3){
                foreach ($query1 as $k1 => $v1){
                    if($v1['uid'] == $v3['uid']){
                        $v3['expect'] = 1;         // 预约状态：1--代表正在借书中， 0--没有借书进行申请
                        $query[$k3] = $v3;
                    }
                }
            }
        }
        // 2--归还申请 6
        if($type == 2){
            $states = [6];
            $query = Borrow::borrow($states);
            $query = Publicmethod::isBeOverdueAll($query);
//            dump($query);die;
        }
        // 3--预约记录
        if($type == 3){
            $states = [8];
            $query = Borrow::borrow($states);
        }
        $arr = Publicmethod::pageing($query,$page,'5');
        if(empty($arr)){
            return 0;
        }
        $arr['type'] = $type;
        return $arr;
    }
    /**
     * 借阅归还申请
     * type 1 同意借阅  2 驳回借阅   3 同意归还   4 驳回归还
     * 1--申请成功（未归还），2--驳回借阅申请，3--借阅申请中，4--取消申请，5--驳回归还申请，6--归还申请，7--已归还
     */
    public function borrowOrReturnApply(){
        $id = $_POST['id'];
        $type = $_POST['type'];
        // 1 同意借阅
        if($type == 1){
            // 先检查他手里是否有书，有就返回2，告诉管理员不能借给他，没书就借
            $uid = $_POST['uid'];
            $bid = $_POST['bid'];
            $query = Borrow::borrow([1,5,6]);
            foreach ($query as $k => $v){
                if($v['uid'] == $uid){
                    return 2;
                }
            }

            $borrowData = array('states'=>1,'booktime'=>time(),'expectedReturnTime'=>time()+1296000);
            $result = Borrow::updateBorrowOne($id,$borrowData);
            // 改变书的状态为借出
            $result2 = Books::editBooks(array('id'=>$bid,'bstates'=>2));

            if($result==1 && $result2==1){
                // 判断是否有人同时在申请这本书，有的话就把其他人的状态变为预约状态中，没有不做处理
                $query = Borrow::selectGroupBy($bid);
                foreach ($query as $k => $v){
                    // 判断除了同意的这个人每条记录states如果不等于 8，就修改成8
                    if($v['states'] == 3 && $v['id'] != $id){
                        Borrow::updateBorrowOne($v['id'],array('states'=>8,'appointmenttime'=>$v['applybooktime']));
                    }
                }
                return 1;
            }
            return 0;
        }
        // 2 驳回借阅
        if($type == 2){
            $result = Borrow::updateBorrowOne($id,array('states'=>2));
            if($result){
                return 1;
            }
            return 0;
        }
        // 3 同意归还
        if($type == 3){
            $bid = $_POST['bid'];
            $result = Borrow::updateBorrowOne($id,array('states'=>7,'returntime'=>time()));
            $result2 = Books::editBooks(array('id'=>$bid,'bstates'=>1));
            if($result==1 && $result2==1){
                // 归还这本书时，判断这本书是否有预约，有预约就变成申请状态，没有不做处理
                $query = Borrow::selectGroupBy($bid,8);
                foreach ($query as $k => $v){
                    // 判断除了同意的这个人每条记录states如果不等于 8，就修改成8
                    if($v['states'] == 8 && $v['id'] != $id){
                        Borrow::updateBorrowOne($v['id'],array('states'=>3,'applybooktime'=>$v['appointmenttime']));
                    }
                }
                return 1;
            }
            return 0;
        }
        // 4 驳回归还
        if($type == 4){
            $result = Borrow::updateBorrowOne($id,array('states'=>5));
            if($result){
                return 1;
            }
            return 0;
        }
    }
    /**
     * 图书记录
     */
    public function bookRecord(){
        if (!$this->checkIndex()){
            $this->redirect('/index/index/login');
        }
        return view('bookRecord');
    }
    /**
     * 图书记录分页   1--借阅记录 1,5,7   2--逾期记录 1,7   3--操作记录
     * 1--申请成功（就是被借），2--驳回，3--正在申请中，4--取消申请，6--归还申请，7--已归还
     */
    public function pageBookRecord(){
        $page = !empty($_POST['page'])?$_POST['page']: 1;
        $type = input('pageType');
        // 借阅记录
        if($type == 1){
            $states = [1,2,5,7];
            $query = Borrow::borrow($states,'desc','booktime');
            $query = Publicmethod::isBeOverdueAll($query);
//            dump($query);die;
        }
        // 逾期记录
        else if($type == 2){
            $states = [1,7];
            $res = Borrow::borrow($states,'desc');
            $query = Publicmethod::isBeOverdue($res);
        }
        // 操作记录
        else if($type == 3){
            $query = Books::selectAllBooks();

        }
        $arr = Publicmethod::pageing($query,$page,3);
//        dump($arr);die;
        if(empty($arr)){
            return 0;
        }
        $arr['type'] = $type;
        return $arr;
    }
    /**
     * 逾期记录 点击 设为已读
     */
    public function setAlreadyRead(){
        $id = $_POST['id'];
        $result = Borrow::updateBorrowOne($id,array('isread'=>1));
        if($result){
            return 1;     // 更新成功返回 1
        }
        return 0;   // 更新失败返回 0
    }
    /**
     * 图书添加
     */
    public function bookAdd(Request $request){
        if (!$this->checkIndex()){
            $this->redirect('/index/index/login');
        }
        $arr = $request->post();
        // 没有传过来值就进行页面返回
        if(empty($arr)){
            return view('bookAdd');
        }
        $data['bname'] = $arr['bookName'];
        $data['img'] = $arr['imgUrl'];
        $data['from'] = $arr['bookFrom'];
        $data['addtime'] = time();
        $data['operationtime'] = $data['addtime'];
        // 对图书进行检测，查看数据库里面有没有这本书
        $queryBook = Books::selectBooks($data['bname']);
        if(empty($queryBook)){
            // 对传过来的值进行数据库添加  添加成功返回1，失败返回0
            $addbook = Books::addBooks($data);
            if($addbook){
                return 1;   // 添加成功返回 1
            }
            else{
                return 0;   // 添加失败返回 0
            }
        }
        else{
            return 2;     // 数据库如果存在这本书返回 2
        }
    }
    /**
     * 图书查询
     */
    public function selectBook(){
        $id = $_POST['id'];
        $query = Books::selectOneBook($id);
        if(!empty($query)){
            return $query;
        }
        return 0;
    }
    /**
     * 图书编辑
     * @param Request $request
     * @return int|\think\response\View
     * @throws \think\Exception
     * @throws \think\exception\PDOException
     */
    public function bookEdit(Request $request){
        if (!$this->checkIndex()){
            $this->redirect('/index/index/login');
        }
        $arr = $request->post();
        // 没有传过来值就进行页面返回
        if(empty($arr)){
            return view('home');
        }

        $data['id'] = $arr['id'];
        if(!empty($arr['bookName'])){
            $data['bname'] = $arr['bookName'];
        }
        if(!empty($arr['imgUrl'])){
            $data['img'] = $arr['imgUrl'];
        }
        if(!empty($arr['bookFrom'])){
            $data['from'] = $arr['bookFrom'];
        }

        // 对图书进行检测，查看数据库里面有没有这本书
        $queryBook = Books::selectBooks($data['bname']);

        if(!empty($queryBook)){
            if($queryBook['id'] == $arr['id']){
                // 对传过来的值进行数据库添加  添加成功返回1，失败返回0
                $addbook = Books::editBooks($data);
                if($addbook){
                    return 1;   // 编辑成功返回 1
                }
                else{
                    return 0;   // 编辑失败返回 0
                }
            }
            else{
                return 2;     // 数据库如果存在这本书返回 2
            }
        }
        else{
            $addbook = Books::editBooks($data);
            if($addbook){
                return 1;   // 编辑成功返回 1
            }
            else{
                return 0;   // 编辑失败返回 0
            }
        }

    }
    /**
     * 删除图书
     */
    public function deleteBook(Request $request){
        $arr = $request->post();
        $data['id'] = $arr['id'];
        $data['deleteReason'] = $arr['reason'];
        $data['deletetime'] = time();
        $data['operationtime'] = $data['deletetime'];
        $data['isdelete'] = 2;
        $addbook = Books::editBooks($data);
        if($addbook){
            return 1;   // 添加成功返回 1
        }
        else{
            return 0;   // 添加失败返回 0
        }
    }

    /**
     * 修改密码-管理员
     */
    public function editpass(){
        if (!$this->checkIndex()){
            $this->redirect('/index/index/login');
        }
        return view();
    }

    /**
     * 执行修改密码
     */
    public function doeditpassword(){
        $data = input('post.');
//        return $data;
        if ($data) {
            $datas['oldpass'] = md5($data['oldpass']);
            $datas['newpass'] = md5($data['password']);
        }
        $usename = Session::get('account');
//         return $usename;
        $oldpass = db('user')->where('type',2)->where('account',$usename)->find();
//         return $oldpass['pass'];
        if ($oldpass) {
            if ($oldpass['pass'] == $datas['oldpass']) {
                $result = db('user')->where('account',$usename)->setField('pass',$datas['newpass']);
                if ($result==1) {
                    session_destroy();
                    return $result;
                }else{
                    return array('msg'=>'修改失败','status'=>'2');
                }
            }else{
                return array('msg'=>'原始密码输入错误','status'=>'3');
            }
        }else{
            return array('msg'=>'没有指定用户','status'=>'4');
        }
    }

    /**
     * 团购成员
     */
    public function groupbuy(){
        if (!$this->checkIndex()){
            $this->redirect('/index/index/login');
        }
        $page = input('page', '', 'intval'); 
        $showrow = input('pageSize', '', 'intval');
        $dbobject = db('grouppurchase');
        $data = $this->getPagingData($dbobject,$page,$showrow);
        $list = '';
        if($data['status']==1){
            $list = $data['data'];
        }      
        if ($page == '') {
            return view();
        }        
        return json($list);
        //总数据

    }

    /**
     * 编辑团队来源
     */
    public function editgroup($id)
    {
        $result = db('grouppurchase')->where('id',$id)->find();
        return $result;
    }

    /**
     * 执行团队来源编辑
     */
    public function doeditgroup(Request $request)
    {
        if (!$this->checkIndex()){
            $this->redirect('/index/index/login');
        }
        $data = $request->post();
        // return $data;
        $res = db('grouppurchase')->where('id',$data['id'])->update([
            'title' => $data['title'],
            'content' => $data['content'],
            ]);
        if ($res) {
            return 1;
        }else{
            return 0;
        }
    }

    /**
     * 删除团队来源
     */
    public function deletegroup($id){
        if (!$this->checkIndex()){
            $this->redirect('/index/index/login');
        }
        $res = db('grouppurchase')->where('id',$id)->delete();
        return $res;

    }

    /**
     * 添加团队来源
     */
    public function addgroup(){
        return 1;
    }

    /**
     * 执行添加团队来源方法
     */
    public function addgroupdata(Request $request){
        $data = $request->post();
        $res = db('grouppurchase')->insert($data);
        return $res;
    }

}